// 购物车状态
export default {
  namespaced: true,
  state: () => {
    return {
      list: [] // 购物车列表
    }
  },
  mutations: {
    // 加入购物车
    insertCart (state, good) {
      // 如果当前没有添加过商品 unshift(good)
      // 如果当前已经添加过该商品 不执行unshift 而是基于当前商品的count字段加一
      // 找到当前添加的商品 若没有返回-1  若有返回下标
      const index = state.list.findIndex(item => item.skuId === good.skuId)
      if (index > -1) {
        // 代表商品已经添加过 原有的数量 + 传过来的商品数量
        state.list[index].count = state.list[index].count + good.count
      } else {
        // 没有添加过 从前添加进list数组
        state.list.unshift(good)
      }
    }
  },
  actions: {
    // 区分两种状态
    asyncInsertCart (ctx, good) {
      // 返回一个promise对象 resolve成功  reject失败
      return new Promise((resolve, reject) => {
        // 通过ctx(上下文).rootState.user.profile.token 跨模块拿数据 (vuex内置方法)
        // 如果token存在
        if (ctx.rootState.user.profile.token) {
          // 用户已登录
        } else {
          // 未登录
          // 提交mutation函数 提交后放行
          ctx.commit('insertCart', good)
          resolve()
        }
      })
    }
  }
}
